iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
Software Development

用leetcode系統化學習C語言系列 第 16

入門指標題目練習

  • 分享至 

  • xImage
  •  

前幾篇我們主要練習了陣列與迴圈的題目(像是1929題),已經熟悉了基本的C語法
從今天開始,我們要進入指標的世界!
此篇來練習 LeetCode 1342 這題本身難度較低,但它的特點是:
我們需要不斷修改同一個數值,直到變成 0,這就很適合用指標參數來傳遞與修改值,也剛好可以練習 * 和 & 的用法,為之後的 malloc 與動態陣列打好基礎。

📖 題目描述
給定一個整數 num,每次操作:
如果是偶數,除以 2。
如果是奇數,減 1。
重複這個過程,直到 num == 0,回傳總共需要的步數。

範例:
輸入:num = 14
過程:14 → 7 → 6 → 3 → 2 → 1 → 0
輸出:6
https://ithelp.ithome.com.tw/upload/images/20250930/20169489GzSeojNw3k.png
📝心得
這一題的邏輯不難,寫法是指標的基本概念:int* p = # 表示 p 儲存了 num 的記憶體位置;*p 表示「存取這個位置的值」,所以 *p 就等同於 num
不論是讀取還是修改數字,都要透過 *p 來操作。雖然這樣的寫法比直接操作變數還複雜,但這就是學習指標的第一步:理解變數的記憶體位置,並能透過指標間接控制它。


上一篇
C指標統整
下一篇
練習 C 語言指標與陣列操作題目
系列文
用leetcode系統化學習C語言24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言